import { Controller, Get, Post, Body, Patch, Param, Delete, ParseIntPipe, Query } from '@nestjs/common';
import { ChatroomService } from './chatroom.service';
import { CreateChatroomDto } from './dto/create-chatroom.dto';
import { UpdateChatroomDto } from './dto/update-chatroom.dto';
import { RequireLogin, UserInfo } from 'src/decorator/custom.decorator';

@Controller('chatroom')
export class ChatroomController {
    constructor(private readonly chatroomService: ChatroomService) {}
    /* 
    需求：
        - 一对一聊天室 两两互为好友 聊天室name 可以不指定
        - 群聊聊天室 name 可以修改 可以默认 也可以必须指定
            - 创建之后 聊天室应当只有自己 然后可以拉取用户 加入群聊（接口） 也可以退出群聊（接口）
    接口
        - 一对一聊天室
        - 群聊聊天室
            - 加入群聊
            - 退出群聊
        - 聊天室的详细信息
    */

    @Post('create-one')
    @RequireLogin()
    async oneToOne(@Body('friendId' , ParseIntPipe) frienId:number , @UserInfo("userId") userId:number){
        return await this.chatroomService.createOneToOne(frienId , userId)
    }

    @Post('create-group')
    @RequireLogin()
    async group(@Body('name' ) name:string , @UserInfo("userId") userId:number){
        return await this.chatroomService.createGroup(name , userId)
    }

    @Get('info')
    @RequireLogin()
    async info(@Query("chatroomId" , ParseIntPipe) chatroomId :number ){
        return await this.chatroomService.info(chatroomId)
    }

    // 加入群聊
    @Post('join')
    @RequireLogin()
    async join(@Body("chatroomId" , ParseIntPipe)  chatroomId:number ,@Body("userlist") userlist : number[]){
       return await this.chatroomService.join(chatroomId , userlist)
    }

    // 获取可添加到群聊的列表
    @Post('can-join')
    @RequireLogin()
    async canjoin(@Body("chatroomId" , ParseIntPipe)  chatroomId:number ,@UserInfo("userId") userId:number){
       return await this.chatroomService.canJoin(chatroomId , userId)
    }

    // 退出群聊
    @Post("quit")
    @RequireLogin()
    async quit(@Body("chatroomId" , ParseIntPipe)  chatroomId:number , @UserInfo("userId") userId:number){
        return await this.chatroomService.quit(chatroomId , userId)
    }

    // 聊天室列表
    @Post('list')
    @RequireLogin()
    async list (@Body("name") name:string ,@UserInfo("userId") userId:number ){
        return await this.chatroomService.list(name , userId)
    }

    // 获取聊天室
    @Post('getOneToOne')
    @RequireLogin()
    getOneToOne(@Body("friendId") friendId:number , @UserInfo("userId") userId:number ){
        return this.chatroomService.getOneToOne(friendId , userId)
    }
    


}
